package com.easygem.system.mapper;


import com.easygem.common.model.system.User;
import com.easygem.common.vo.system.UserVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @Author 文晓平
 * @Date 2024/12/7 15:03
 * @Version 1.0
 **/
public interface UserMapper extends Mapper<User> {
    /**
     * 多条件查询所有用户
     * @param user 用户实体对象
     * @return  用户集合列表
     */
    public List<User> selectUserList(User user);

    /**
     * 更新用户状态
     * @param userId  用户编号
     * @param status  用户状态
     * @return
     */
    public int updateUserStatus(@Param("userId") Long userId, @Param("status")Integer status);

    /**
     * 更新多个用户状态
     * @param map  多个用户编号，用户状态
     * @return
     */
    public int updateUserStatusMore(Map<String, Object> map);

    /**
     * 根据部门编号查询用户列表
     *
     * @param deptId 部门编号
     * @return 用户列表集合
     */
    List<UserVO> findUserListByDept(@Param("deptId") Long deptId);


    /**
     * 查资源归属人
     * @param
     * @return
     */
    List<User> selectUsers();

    /**
     * 查询资源创建人
     * @return
     */
    List<User>selectCreateUsers();

    /**
     * 根据条件得到前台用户信息列表
     * 按所属销售来
     * @param user 对象
     * @return
     */
    List<User> getUserByEmpId(User user);

    /**
     * 查询出账号超级管理员的部门编号
     * @param accountName 账号名
     * @return
     */
    Long getDeptId(@Param("accountName") String accountName);
    /**
     * 得到所有的账号
     * 按所属销售来
     * @return
     */
    List<String> getAccountName(@Param("employeeId") Long empId);

    /**
     * 根据用户id得到用户详细信息
     * @param userId id
     * @return
     */
    User selectUserById(@Param("userId") Long userId);



    /**
     * 删除或批量删除用户（用户下线）
     * @param userId id集合
     * @return
     */
    int deleteUserById(@Param("userId") Long[] userId);
    /**
     * 删除或批量删除关联的角色
     * @param userId id集合
     * @return
     */
    int deleteRole(@Param("userId") Long[] userId);
    /**
     * 查询出账号超级管理员的用户ID
     * @param accountName 账号名
     * @return
     */
    Long getUserIdByAccountName(@Param("accountName") String accountName);

    public int editPwd(@Param("userId") Long userId, @Param("newPwd")String newPwd);


}
